package org.dromara.order.domain.entry;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 订单表
 * 数据库表名：bus_order
 */
@Data
@TableName("bus_order")
public class BusOrder implements Serializable {

    @TableField("id")
    @NotNull(message = "id不能为空")
    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer id;

    @TableField("create_time")
    @Schema(description = "创建时间")
    private LocalDateTime create_time;

    @TableField("update_time")
    @Schema(description = "更新时间")
    private LocalDateTime update_time;

    @TableField("del_flag")
    @Schema(description = "删除标志: 0-存在, 1-删除")
    private Integer del_flag;

    @TableField("customer_name")
    @NotBlank(message = "您的姓名不能为空")
    @Size(max = 100, message = "您的姓名长度不能超过100")
    @Length(max = 100, message = "您的姓名长度不能超过100")
    @Schema(description = "您的姓名", requiredMode = Schema.RequiredMode.REQUIRED)
    private String customer_name;

    @TableField("contact_phone")
    @NotBlank(message = "手机（含国家区号）不能为空")
    @Size(max = 30, message = "手机（含国家区号）长度不能超过30")
    @Length(max = 30, message = "手机（含国家区号）长度不能超过30")
    @Schema(description = "手机（含国家区号）", requiredMode = Schema.RequiredMode.REQUIRED)
    private String contact_phone;

    @TableField("contact_wa")
    @Size(max = 30, message = "WhatsApp账号长度不能超过30")
    @Length(max = 30, message = "WhatsApp账号长度不能超过30")
    @Schema(description = "WhatsApp账号")
    private String contact_wa;

    @TableField("contact_wechat")
    @Size(max = 30, message = "微信账号长度不能超过30")
    @Length(max = 30, message = "微信账号长度不能超过30")
    @Schema(description = "微信账号")
    private String contact_wechat;

    @TableField("sample_type")
    @NotNull(message = "期望样本类型不能为空")
    @Schema(description = "期望样本类型", requiredMode = Schema.RequiredMode.REQUIRED)
    private Object sample_type;

    @TableField("sample_prop")
    @NotNull(message = "期望样本属性不能为空")
    @Schema(description = "期望样本属性", requiredMode = Schema.RequiredMode.REQUIRED)
    private Object sample_prop;

    @TableField("clinic_name")
    @NotBlank(message = "合作诊所名称不能为空")
    @Size(max = 200, message = "合作诊所名称长度不能超过200")
    @Length(max = 200, message = "合作诊所名称长度不能超过200")
    @Schema(description = "合作诊所名称", requiredMode = Schema.RequiredMode.REQUIRED)
    private String clinic_name;

    @TableField("clinic_address")
    @NotBlank(message = "合作诊所地址不能为空")
    @Size(max = 500, message = "合作诊所地址长度不能超过500")
    @Length(max = 500, message = "合作诊所地址长度不能超过500")
    @Schema(description = "合作诊所地址", requiredMode = Schema.RequiredMode.REQUIRED)
    private String clinic_address;

    @TableField("doctor_name")
    @NotBlank(message = "合作医生姓名不能为空")
    @Size(max = 100, message = "合作医生姓名长度不能超过100")
    @Length(max = 100, message = "合作医生姓名长度不能超过100")
    @Schema(description = "合作医生姓名", requiredMode = Schema.RequiredMode.REQUIRED)
    private String doctor_name;

    @TableField("nurse_name")
    @NotBlank(message = "责任护士姓名不能为空")
    @Size(max = 100, message = "责任护士姓名长度不能超过100")
    @Length(max = 100, message = "责任护士姓名长度不能超过100")
    @Schema(description = "责任护士姓名", requiredMode = Schema.RequiredMode.REQUIRED)
    private String nurse_name;

    @TableField("nurse_email")
    @NotBlank(message = "责任护士邮箱不能为空")
    @Size(max = 255, message = "责任护士邮箱长度不能超过255")
    @Length(max = 255, message = "责任护士邮箱长度不能超过255")
    @Schema(description = "责任护士邮箱", requiredMode = Schema.RequiredMode.REQUIRED)
    private String nurse_email;

    @TableField("svc_refer_clinic")
    @Schema(description = "附加服务-推荐诊所 0/1")
    private Integer svc_refer_clinic;

    @TableField("svc_dna_save")
    @Schema(description = "附加服务-DNA保存 0/1")
    private Integer svc_dna_save;

    @TableField("svc_ship_assist")
    @Schema(description = "附加服务-运输协助 0/1")
    private Integer svc_ship_assist;

    @TableField("special_req")
    @Size(max = 65535, message = "特殊需求或顾虑长度超限")
    @Length(max = 65535, message = "特殊需求或顾虑长度超限")
    @Schema(description = "特殊需求或顾虑")
    private String special_req;

    @TableField("agree_risk")
    @NotNull(message = "同意《捐赠者风险提示》 0/1 不能为空")
    @Schema(description = "同意《捐赠者风险提示》 0/1", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer agree_risk;

    @TableField("agree_law")
    @NotNull(message = "了解当地法规 0/1 不能为空")
    @Schema(description = "了解当地法规 0/1", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer agree_law;

    @TableField("agree_truth")
    @NotNull(message = "承诺信息真实 0/1 不能为空")
    @Schema(description = "承诺信息真实 0/1", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer agree_truth;

    @TableField("created_at")
    @Schema(description = "订单创建时间")
    private LocalDateTime created_at;

    @TableField("updated_at")
    @Schema(description = "最后更新时间")
    private LocalDateTime updated_at;
}
